package demo1;


//场景是：我们需要完成两次自增十亿次,我们分别使用单线程和多线程来完成，对比他们分别的运行时间
public class demo_01multiThread {
    //可以使用_来分隔看得更加清楚
    public static long count=10_0000_0000l;
    public static void main(String[] args) throws InterruptedException {
        single_thread();
        multiThread();
    }


    //单线程完成
    public static  void  single_thread(){
            //记录开始的时间
            long start=System.currentTimeMillis();
            int a=0;
            for (int i = 0; i <count ; i++) {
                a++;
            }
            int b=0;
            for (int i = 0; i < count; i++) {
                b++;
            }
            //记录完成后的时间
            long end=System.currentTimeMillis();
            System.out.println("单线程所需要的时间（ms）： "+(end-start));
    }


    //多线程来完成
    public static  void multiThread() throws InterruptedException {
        //使用多线程来完成
        Thread thread1 =new Thread(()->{
            int a=0;
            for (int i = 0; i <count ; i++) {
                a++;
            }
        });
        Thread thread2 =new Thread(()->{
            int b=0;
            for (int i = 0; i < count; i++) {
                b++;
            }
        });
        //记录开始的时间
        long start=System.currentTimeMillis();
        thread1.start();
        thread2.start();
        //用.join()这个方法让他们等待这两个线程完成任务后再执行后续代码
        thread1.join();
        thread2.join();
        long end=System.currentTimeMillis();
        System.out.println("多线程所需要的时间（ms）: "+(end-start));
    }
}
